package cn.chengpengper.rpc.serialization.api;

import cn.chengpengper.rpc.constants.RpcConstants;
import cn.chengpengper.rpc.spi.annotation.Spi;

/**
 * @author chengpeng.hu
 */
@Spi(RpcConstants.SERIALIZATION_JDK)
public interface Serialization {

    /**
     * 序列化
     *
     * @param obj 对象
     * @return 字节数组
     */
    <T> byte[] serialize(T obj);

    /**
     * 反序列化
     *
     * @param data  字节数组
     * @param clazz class对象
     * @return 对象
     */
    <T> T deserialize(byte[] data, Class<T> clazz);
}
